package com.dianxin.smartpark.service.attendance;

import com.chinatelecom.response.common.CommonResponseBody;
import com.dianxin.smartpark.dao.qo.access.SmartParkAccessControlPassRecordQO;
import com.dianxin.smartpark.dao.qo.attendance.SmartParkAttendanceRecordQO;
import com.dianxin.smartpark.service.vo.attendance.SmartParkAttendanceRecordVO;
import org.springframework.scheduling.annotation.Async;

import java.util.List;

/**
 * @program: smart-park
 * @description: 考勤记录
 * @author: chenyong
 * @create: 2021-08-03 15:54
 */

public interface SmartParkAttendanceRecordService {

    /**
     * 分页查询
     * @Description:  分页查询
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody<List<SmartParkAttendanceRecordVO>>
     */
    CommonResponseBody<List<SmartParkAttendanceRecordVO>> getAttendanceRecords(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     * 保存打卡记录
     * @Description:  保存打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    @Async
    CommonResponseBody saveAttendanceRecord(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     * 保存App打卡记录
     * @Description:  保存App打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody saveAppAttendanceRecord(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     *
     * @Description:  修改打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody updateAttendanceRecord(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     *
     * @Description:  删除打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody deleteAttendanceRecord(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     * 打卡记录详情
     * @Description:  打卡记录详情
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody attendanceRecordDetails(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     * 异常打卡记录
     * @Description:  异常打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/10 0010
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody saveAbnormalAttendanceRecord(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     * 手动异常打卡记录
     * @Description:  手动异常打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/10 0010
     * @param smartParkAttendanceRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody manualSaveAbnormalRecord(SmartParkAttendanceRecordQO smartParkAttendanceRecordQO);

    /**
     * 手动保存打卡记录
     * @Description:  手动保存打卡记录
     * @Author: ChenYong
     * @Date: 2021/8/3 0003
     * @param smartParkAccessControlPassRecordQO:
     * @Return: CommonResponseBody
     */
    CommonResponseBody manualSaveRecord(SmartParkAccessControlPassRecordQO smartParkAccessControlPassRecordQO);
}
